package app.fichajes.views;

import java.util.List;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import app.fichajes.cacheo.FichajesData;
import app.fichajes.constants.Constants;
import app.fichajes.data.News;
import app.fichajes.main.Main;
import app.fichajes.main.R;

import com.gi.libraryutility.main.ActivityUtility;

public class Noticias {
	
	
	private static ListView listViewNoticias = (ListView)ActivityUtility.getActivityActual().findViewById(R.id.listViewNoticias);
	
	public static void init(){
		
		ArrayAdapter<News> adapter = new ArrayAdapterListaNoticias(Main.getContext(), FichajesData.getListaNoticias());
		listViewNoticias.setAdapter(adapter);
		
	}
	
	
	private static class ArrayAdapterListaNoticias extends ArrayAdapter<News>{

		public ArrayAdapterListaNoticias(Context context, List<News> objects) {
			super(context, -1, objects);
			
		}
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
				
			News noticia = this.getItem(position);
			
			String titulo = noticia.getTitular();
			String entradilla = noticia.getEntradilla();
			Drawable imagen = noticia.getImagen();
			
			
			if(convertView == null){
				LayoutInflater vi = (LayoutInflater)ActivityUtility.getActivityActual().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				convertView = (View)vi.inflate(R.layout.row_noticia, null, false);
				
				convertView.setTag(new NoticiasWrapper(convertView));
			}
			
			NoticiasWrapper noticiasWrapper = (NoticiasWrapper)convertView.getTag();
			
			noticiasWrapper.getImagen().setImageDrawable(imagen);
			noticiasWrapper.getTitulo().setText(Html.fromHtml(titulo));
			noticiasWrapper.getEntradilla().setText(Html.fromHtml(recortaCadena(titulo, entradilla)));
				
			convertView.setOnClickListener(new VerNoticiaCompleta(imagen, titulo, entradilla));
			
			return convertView;
		}
		
		
		/** Ajustar titulos segun entradillas y recortar descripciones **/
		private String recortaCadena(String titulo, String entradilla){
			if(titulo.length()>50){
				entradilla = entradilla.substring(0, 25)+"...";
			}else{
				if(entradilla.length() > 50){
					entradilla = entradilla.substring(0, 50)+"...";
				}
			}
			return entradilla;
		}
		
		
		private class NoticiasWrapper{

			
			private View base;
			private ImageView imagen;
			private TextView titulo;
			private TextView entradilla;
			
			public NoticiasWrapper(View base){
				this.base = base;
			}
			
			public ImageView getImagen(){
				if(imagen == null)
					imagen = (ImageView)base.findViewById(R.id.imageViewImgNoticias);
				
				return imagen;
			}
			
			public TextView getTitulo(){
				if(titulo == null)
					titulo = (TextView)base.findViewById(R.id.textViewTituloNoticia);
				
				return titulo;
			}
			
			public TextView getEntradilla(){
				if(entradilla == null)
					entradilla = (TextView)base.findViewById(R.id.textViewEntradillaNoticia);
				
				return entradilla;
			}
		}
		
		private class VerNoticiaCompleta implements OnClickListener{

			private Drawable imagen;
			private String titulo;
			private String noticia;
			
			public VerNoticiaCompleta(Drawable imagen, String titulo, String noticia){
				this.imagen = imagen;
				this.titulo = titulo;
				this.noticia = noticia;
			}
			
			@Override
			public void onClick(View v) {
				new DialogNoticiaCompleta(Main.getContext(), Constants.DIALOG_THEME, imagen, titulo, noticia);
			}
			
		}
	}

}
